@奈良山
2年前 提问
1个回答

模糊测试数据的生成方法可以分为哪几类

一颗小胡椒
2年前

模糊测试数据的生成方法可以分为以下几类:

  • 预先生成测试用例:需要对一个专门规约进行研究,其目的是理解所有被支持的数据结构和每种数据结构可接受的值范围。硬编码的数据包或文件随后被生成,以测试边界条件或迫使规约发生违例,这些用例可用于检测目标实现规约的精确程度。该方法的测试用例可以被重用,缺点是需要事先完成大量工作,且测试用例有局限性,一旦测试用例用完,模糊测试就只能结束。

  • 随机生成测试用例:该方法的工作原理是大量产生伪随机数据给待测软件。这种方法原理简单,但很难逆向找到引起软件异常的具体原因,效率很低。

  • 协议变异人工测试:该方法的测试过程是在加载了目标应用程序后,测试人员仅通过输入不恰当的数据来尝试让服务器崩溃或使其产生非预期的行为。这种方法不需要自动化的模糊器,人就是模糊器,可以充分利用测试者自身的经验和直觉。

  • 变异或强制性测试:从一个有效的协议或数据格式样本开始,持续不断地打乱数据包或文件中的每一个字节、字、双字或字符串。所以,对应模糊工具的工作就是修改数据然后发送。这种方法几乎不需要事先对被测软件进行研究,测试数据的生成和发送都可以自动完成,但由于大量的测试时间都浪费在生成数据上,所以效率也不高。

  • 自动协议生成测试:一种更高级的强制性测试方法,在测试前需要进行研究,包括理解和解释协议规约或文件定义。但与前一种方法不同,它并不创建测试用例,而是创建一个描述协议规约如何工作的文法,因此需要识别数据包或文件中的静态部分和动态部分。模糊器动态解析这些模板,生成模糊测试数据,然后向被测目标发送模糊后产生的包或文件。这种方法需要耗费一定时间来产生文法或数据格式的定义。